
package dtdrelacional;

import java.util.*;

public class Main {

  public static void main(String[] args) throws Exception {
    
    // estos nombres deberian entrar por linea de comandos
    String nombreDTD = "test.dtd";
    String nombreXML = "test.xml";

    String nombreEsquemaTablas = 
            nombreDTD.substring(0, nombreDTD.lastIndexOf('.')) + "_tablas.sql";
    String nombreEsquemaTablasDrops = 
            nombreDTD.substring(0, nombreDTD.lastIndexOf('.')) + "_tablas_drops.sql";
    String nombreEsquemaForaneas = 
            nombreDTD.substring(0, nombreDTD.lastIndexOf('.')) + "_foraneas.sql";
    String nombreEsquemaForaneasDrops = 
            nombreDTD.substring(0, nombreDTD.lastIndexOf('.')) + "_foraneas_drops.sql";
    String nombreInserciones = 
            nombreXML.substring(0, nombreXML.lastIndexOf('.')) + "_inserciones.sql";
    
    // Inicializo las estructuras para guardar el esquema
    HashMap<String, TablaSQL> tablasSQL = new HashMap<String, TablaSQL>();
    HashMap<String, RelacionER> relacionesER = new HashMap<String, RelacionER>();
    
    // GENERO LAS ESTRUCTURAS DE LAS TABLAS SQL Y LAS RELACIONES ER
    GeneradorTablas generadorTablas = new GeneradorTablas(tablasSQL,relacionesER);
    generadorTablas.generar(nombreDTD);
    
    // GENERO LOS SCRIPTS PARA LAS TABLAS Y LOS CONSTRINT's DE LAS CLAVES FORANEAS
    GeneradorScriptEsquema generadorScriptEsquema = new GeneradorScriptEsquema(tablasSQL);
    generadorScriptEsquema.generar(nombreEsquemaTablas, nombreEsquemaTablasDrops,
            nombreEsquemaForaneas, nombreEsquemaForaneasDrops);
    
    // GENERO LOS SCRIPTS PARA LAS INSERCIONES
    GeneradorScriptInserciones esquemaScripter =
            new GeneradorScriptInserciones(tablasSQL, relacionesER);
    esquemaScripter.generar(nombreXML, nombreInserciones);
  }
}
